//Clase que extiende de herramienta, en este caso cuadrado
public class Cuadrado extends Herramienta{
  
  private int resX=-1;
  private int resY=-1;
  private int estado = 0;
  
  
  //Constructor
  public Cuadrado(int posicionx,int posiciony,int altoherramienta,int anchoherramienta,String nombre){
   
    this.posicionx=posicionx;
   this.posiciony=posiciony;
   this.anchoherramienta = anchoherramienta;
   this.altoherramienta = altoherramienta;
   this.nombre=nombre;
   
   
   
  }
  public int getTipo(){
    return 1;
  }
  //Setters de las restricciones de longitud
  public void setResX(int resX){
    this.resX = resX;
  }
  public void setResY(int resY){
    this.resY = resY;
  }
  //Funcion que se activa al presionar el mouse y crea la etiqueta.
  public boolean mousePressed(int offsetx,int offsety,float zoom,float zoomy,float dragX,float dragY){
   if(mouseButton == LEFT){
    
    switch(estado){
    case 0:
      
      x=(int)((((mouseX-dragX) -((width-offsetx)/2.0))/zoom));
      y=(int)((((mouseY-dragY) -((height-offsety)/2.0))/zoomy));
      estado++;
      return false;
      case 1:
      int x2 = resX!=-1?resX:(int)((((mouseX-dragX-(width-offsetx)/2.0)/zoom))-x);
      int y2 = resY!=-1?resY:(int)((((mouseY-dragY-(height-offsety)/2.0)/zoomy))-y);
      lastEtiqueta = new Etiqueta(x,y,x2,y2,nombre);
      estado=0;
      return true;
      
   } 
   return false;
  }
return false;}
  
  //Funcion que muestra en tiempo real como quedara la etiqueta al agregarla
  public void displayEstado(int offsetx,int offsety,float zoom,float zoomy,float dragX,float dragY){
   
   if(estado==1){
     noFill();
      int x2 = resX!=-1?resX:(int)((((mouseX-dragX-(width-offsetx)/2.0)/zoom))-x);
      int y2 = resY!=-1?resY:(int)((((mouseY-dragY-(height-offsety)/2.0)/zoomy))-y);
    rect((x*zoom)+((width-offsetx)/2)+dragX,(y*zoomy)+((height-offsety)/2)+dragY,x2*zoom,y2*zoomy);
   } 
  }
  //Funcion que devuelve el texto de ayuda de la herramienta
   public String getTextoHelper1(){
     StringBuffer s = new StringBuffer();
     s.append(nombre+" label, square");
     if(resX != -1 && resY==-1){
     s.append(" width allways "+resX+" pixels of width");}
     else if(resY!=-1 & resX==-1){
     s.append(" width allways "+resY+" pixels of height");}
     else if(resX!=-1&&resY!=-1){
     s.append(" width allways "+resX+" x "+resY+" pixels"); }    
     return s.toString();
 }
 //Funcion que devuelve el texto de ayuda de la herramienta
 public String getTextoHelper2(){
 return "SQUARE MODE: Make two clicks to define the label, one for the coordinates and one for the proporcions";
}  
}
